package com.ftg.learn.chapter17.set;

import javafx.scene.media.SubtitleTrack;

import java.util.*;

/**
 *
 * -- set 里面存储不可重复数据
 *      - 任何一个实现里面的数据都是不可重复的
 *
 *
 * @author KangJx
 * @date 2021/8/6
 */
public class LearnSet {

    public void test(){
//        leran set


        Set<Integer> set = new HashSet<>();
        System.out.println(set.isEmpty());
        System.out.println(set.size());
        set.add(23);
        System.out.println(set.size());
        set.add(23);
        set.add(23);
        System.out.println(set.size());

        System.out.println("---======----");
        Set<Integer> set1 = new HashSet<>();

        Object[] obj = set1.toArray();

        //箭头函数
        set1.forEach((x) ->{
            System.out.println(x);
        });

        //这样代码是不是更好看一些
        for(Integer st: set1){
            System.out.println(st);
        }

        //走了10次对吗？
        while(set1.size() < 10){
            set1.add(new Random().nextInt(20));
        }

        //这种写法叫  迭代器(for)
        Iterator<Integer> s1 = set1.iterator();
        for(;s1.hasNext();){
            System.out.println(s1.next());
        }

        //优化一点
        for(Iterator<Integer> s2 = set1.iterator();s2.hasNext();){
            System.out.println(s2.next());
        }

        //while
        Iterator<Integer> s3 = set1.iterator();
        while(s3.hasNext()){
            System.out.println(s3.next());
        }
        System.out.println("===>set3===<");
        Set<Integer> set3 = new HashSet<>();
        set3.add(8);
        set3.add(81);
        set3.add(82);
        set3.add(38);
        set3.add(18);
        set3.add(23);
        set3.add(58);
        set3.add(856);
        //无序
        System.out.println(set3);

        System.out.println("===>set2===<");
        //二分法查找很多快  [如果一个数组是无序的，我们要排序,二分法]

        Set<Integer> set2 = new TreeSet<>();
        set2.add(8);
        set2.add(81);
        set2.add(82);
        set2.add(38);
        set2.add(18);
        set2.add(23);
        set2.add(58);
        set2.add(856);

        //有序的
        System.out.println(set2);

        //一个是hashset
        //看看treeset底层
        //再明天 直接tree 数据结构 map  小测试
        //树 - 先序

    }

//    public static void main(String[] args) {
//        Random r = new Random();
//        int n =0;
//        while(n++ < 10){
////            [0,1)
//            System.out.println(r.nextInt(5));
//        }
//
//    }


}
